Hard disk drives (HDD), or simply hard disks, are found in many computers and dedicated storage appliances. Hard disks can offer significant available storage space (e.g., on the order of terabytes), but the speed at which data can be read from such devices is limited by physical properties such as the speed at which the disk(s) rotate, and the time required for the read head to be maneuvered into the correct position to read the requested data information elements (the so-called seek time).
Solid state storage devices, typically those that employ flash memory as the storage medium, offer improved read times compared to hard disks, in part because there are no moving parts associated with such a device. Write times, however, are often worse than those associated with hard disks because flash memory can only be written in relatively large “erase block” sizes typically 128 KB-512 KB), which must be erased and rewritten in their entirety even if only a small amount of data within the block needs to be updated.
Today, storage devices that employ both flash memory and hard disks are being marketed. In some instances, the flash memory portion of these devices is being used as a cache for data stored on the hard disk. A cache is generally regarded to be a storage area that holds a subset of the data stored on a larger, generally slower, storage medium. The flash memory provides lower latency and serves higher numbers of requests per second than the hard disks and so data stored in the cache portion of the storage device can be delivered more rapidly than if the data had to be accessed from the hard disks. However, updating the cache requires writing to the flash memory, which has drawbacks. As noted above, the flash memory is comparatively slow to write, especially when it must be written randomly to replace the “coldest” (e.g., least frequently accessed or least likely to be needed) data in the cache. Hence, writes to a flash-based cache can slow down concurrent reads from the storage device, thus reducing the benefit of caching. In addition, flash memory has limited write endurance. Typically, flash blocks wear out after 10,000 to 100,000 writes.